﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DADOS.usuario;
using DADOS.auxiliares;
using DADOS.esf;

namespace PROAD.admin.Forms
{
    public partial class FormProfissionais : System.Web.UI.Page
    {
        
        metUsuario metUsuario = new metUsuario();
        metProfissional metAuxiliarProf = new metProfissional();
        metEsf metEquipe = new metEsf();
        metEndereco metAuxEnd = new metEndereco();

        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                CarregarDDL();
                if(Request.QueryString["cod"] != null)
                {
                    hdfCodProf.Value = Request.QueryString["cod"].ToString();
                    btnEditar.Visible = true;
                    btnSalvar.Visible = false;
                    CarregarForm(Convert.ToInt32(hdfCodProf.Value));
                    PanelEquipe.Visible = true;
                    CarregarGridEquipe(hdfCodProf.Value);
                    ddlUS.Enabled = false;
                    ddlEs.Enabled = false;
                }else
                {
                    btnEditar.Visible = false;
                    btnSalvar.Visible = true;
                    PanelEquipe.Visible = false;
                    ddlUS.Enabled = false;
                }
            }
        }

        protected void CarregarGridEquipe(string strCodProf)
        {
            var list = metEquipe.ListarESProfissional(strCodProf);

            var objCat = metAuxiliarProf.SelecionarCategoriaProf(Convert.ToInt32(hdfCodCat.Value));

            if (list != null)
            {
                if (list.Tables[0].Rows.Count >= objCat.NR_MAX_EQUIPE)
                {
                    linkNovoEs.Visible = false;
                }
                else
                {
                    linkNovoEs.Visible = true;
                }
            }
            gridEs.DataSource = list;
            gridEs.DataBind();
        }

        protected void CarregarDDl()
        {
            //UF
            ddlUf.DataSource = metAuxEnd.ListaUF();
            ddlUf.DataBind();
            ddlUf.Items.Insert(0, new ListItem("Selecione UF", "0"));
        }

        protected void CarregarDdlUS(int intCodUf)
        {
            //US
            ddlUS.Enabled = true;
            ddlUS.DataSource = metEquipe.ListaUsUf(intCodUf);
            ddlUS.DataBind();
            ddlUS.Items.Insert(0, new ListItem("Selecione US", "0"));

        }

        protected void CarregarDdlEs(int intCodES)
        {
            //US
            ddlEs.Enabled = true;
            ddlEs.DataSource = metEquipe.ListaEsUs(intCodES, Convert.ToInt32(hdfCodProf.Value));
            ddlEs.DataBind();
            ddlEs.Items.Insert(0, new ListItem("Selecione ES", "0"));

        }

        protected void ddlUf_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlUf.SelectedValue != "0")
            {
                CarregarDdlUS(Convert.ToInt32(ddlUf.SelectedValue));
            }
            else
            {
                ddlUS.SelectedValue = "0";
                ddlUS.Enabled = false;
                ddlEs.SelectedValue = "0";
                ddlEs.Enabled = false;
            }
            ModalEquipe.Show();
        }

        protected void CarregarDllEs()
        {

        }

        protected void ddlUS_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlUS.SelectedValue != "0")
            {
                CarregarDdlEs(Convert.ToInt32(ddlUS.SelectedValue));
            }
            else
            {
                ddlEs.SelectedValue = "0";
                ddlEs.Enabled = false;
            }
            ModalEquipe.Show();
        }

        protected  void CarregarDDL()
        {
            ddlCategoria.DataSource = metAuxiliarProf.ListarCategoriaProf();
            ddlCategoria.DataBind();
            ddlCategoria.Items.Insert(0, new ListItem("Escolha categoria", "0"));
        }

        protected void CarregarForm(int intCodProf)
        {
            var objProf = metUsuario.Selecionar(intCodProf);
            txtNome.Text = objProf.NO_PROFISSIONAL;
            txtCpf.Text = objProf.DS_CPF;
            ddlCategoria.SelectedValue = objProf.CO_CATEGORIA_PROF.ToString();
            txtEmail.Text = objProf.DS_EMAIL;
            txtTelefone.Text = objProf.DS_TELEFONE;
            txtMicroArea.Text = objProf.DS_MICRO_AREA;
            txtSenha.Text = objProf.DS_SENHA;
            ddlPerfil.SelectedValue = objProf.CO_PERFIL.ToString();
            ddlStatus.SelectedValue = objProf.NR_STATUS.ToString();
            hdfCodCat.Value = objProf.CO_CATEGORIA_PROF.ToString();
            txtCpf.Enabled = false;
            txtRegProfissional.Text = objProf.DS_REG_PROFISSIONAL;
        }

        protected DADOS.TB_PROFISSIONAL CarregarObjeto()
        {
            var objProf = new DADOS.TB_PROFISSIONAL();

            objProf.NO_PROFISSIONAL = txtNome.Text;
            objProf.DS_CPF = txtCpf.Text;
            objProf.CO_CATEGORIA_PROF = Convert.ToInt32(ddlCategoria.SelectedValue);
            objProf.DS_EMAIL = txtEmail.Text;
            objProf.DS_TELEFONE = txtTelefone.Text;
            objProf.DS_MICRO_AREA = txtMicroArea.Text;
            objProf.DS_SENHA = txtSenha.Text;
            objProf.CO_PERFIL = Convert.ToInt32(ddlPerfil.SelectedValue);
            objProf.NR_STATUS = Convert.ToInt32(ddlStatus.SelectedValue);
            objProf.DS_REG_PROFISSIONAL = txtRegProfissional.Text;

            return objProf;
        }

        protected Boolean ValidarForm()
        {
            if (txtNome.Text.Length <= 4)
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Nome deve ter mais do que 04 caracteres!";
                txtNome.Focus();
                return false;
            }

            if (string.IsNullOrEmpty(txtCpf.Text))
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "É necessario cadastrar matrícula.";
                 txtCpf.Focus();
                 return false;
            }

            //if (txtCpf.Text.Length != 14)
            //{
            //    txtTituloMsn.Text = "ALERTA";
            //    txtTextoMsn.Text = "CPF deve ter 11 caracteres!";
            //    txtCpf.Focus();
            //    return false;
            //}else
            //{

            //    if (txtCpf.Text == "___.___.___-__")
            //    {
            //        txtTituloMsn.Text = "ALERTA";
            //        txtTextoMsn.Text = "CPF inválido!";
            //        txtCpf.Focus();
            //        return false;
            //    }else
            //    {
            //        if (!Util.Validacao.ValidarCPF(txtCpf.Text))
            //        {
            //            txtTituloMsn.Text = "ALERTA";
            //            txtTextoMsn.Text = "CPF inválido!";
            //            txtCpf.Focus();
            //            return false;
            //        }
            //    }
                
            //}

            if (ddlCategoria.SelectedValue == "0")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Selecione uma categoria!";
                ddlCategoria.Focus();
                return false;
            }

            if (txtEmail.Text.Length < 7)
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Campo email obrigatório!";
                txtEmail.Focus();
                return false;
            }

            if (txtSenha.Text.Length < 4)
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Senha deve ter mais do que 04 caracteres!";
                txtEmail.Focus();
                return false;
            }

            if (ddlStatus.SelectedValue == "")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Selecione um status!";
                ddlStatus.Focus();
                return false;
            }

            if (ddlPerfil.SelectedValue == "")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Selecione um perfil!";
                ddlPerfil.Focus();
                return false;
            }

            if (txtRegProfissional.Text.Length <= 2)
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Favor preencher o campo Registro Profissional!";
                txtEmail.Focus();
                return false;
            }

            return true;
        }

        protected void btnEditar_Click(object sender, EventArgs e)
        {
            if(ValidarForm())
            {
                var objProf = CarregarObjeto();
                objProf.CO_PROFISSIONAL = Convert.ToInt32(hdfCodProf.Value);
                metUsuario.Alterar(objProf);
                Response.Redirect("/admin/consulta/ConsultaProfissionais.aspx?msn=2");
            }else
            {
                ModalPopupMsn.Show();
            }
        }

        protected void btnSalvar_Click(object sender, EventArgs e)
        {
            if (ValidarForm())
            {
                if(metUsuario.ExisteProficional(txtCpf.Text))
                {
                    var objProf = CarregarObjeto();
                    metUsuario.Incluir(objProf);
                    Response.Redirect("/admin/consulta/ConsultaProfissionais.aspx?msn=1");
                }else
                {
                    txtTituloMsn.Text = "ALERTA";
                    txtTextoMsn.Text = "Matrícula já cadastrada em outro profissional!";
                    ModalPopupMsn.Show();
                }
            }
            else
            {
                ModalPopupMsn.Show();
            }
        }

        protected void gridEs_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            int id = Convert.ToInt32(e.CommandArgument);

            switch (e.CommandName)
            {
                case "Excluir":
                    metEquipe.ExcluirAlocacao(Convert.ToInt32(hdfCodProf.Value), id);
                    CarregarGridEquipe(hdfCodProf.Value);
                    break;
            }
        }

        protected void linkNovoEs_Click(object sender, EventArgs e)
        {
            CarregarDDl();
            ddlUS.SelectedValue = "0";
            ddlUS.Enabled = false;
            ddlEs.SelectedValue = "0";
            ddlEs.Enabled = false;
            lblMsnErroEquipe.Text = "";
            ModalEquipe.Show();
        }

        protected void btnIncluirEquipe_Click(object sender, EventArgs e)
        {
            if(ValidaEquipe())
            {
                metEquipe.IncluirAlocacao(Convert.ToInt32(hdfCodProf.Value), Convert.ToInt32(ddlEs.SelectedValue));
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Alocação feita com sucesso!";
                CarregarGridEquipe(hdfCodProf.Value);
            }else
            {
                ModalEquipe.Show();
            }
        }

        protected Boolean ValidaEquipe()
        {
            if (ddlEs.SelectedValue == "" || ddlEs.SelectedValue == "0")
            {
                lblMsnErroEquipe.Text = "Favor escolher uma ES!";
                ddlEs.Focus();
                return false;
            }
            return true;
        }
    }
}